#include <stdlib.h>
#include <stdio.h>

#define SIZE 100
typedef int ElemType;
typedef struct{
    ElemType *base;
    int front;
    int rear;
}SqQueue;

void init(SqQueue &Q){
    Q.base = (ElemType *) malloc(SIZE * sizeof(ElemType));
    if(!Q.base){
        exit(-1);
    }
    Q.front = Q.rear = 0;
}

void getLength(SqQueue Q, int &len){
    // if (Q.front <Q.rear){ 
    //     len = Q.rear -Q.front; 
    // }else{ 
    //     len = SIZE -(Q.front -Q.rear);
    // }
    len = (SIZE + Q.rear - Q.front) % SIZE;
}

void enter(SqQueue &Q, ElemType e){
    int len;
    getLength(Q, len);
    if(len == SIZE - 1){//队满
        return;
    }

    Q.base[Q.rear] = e;

    Q.rear = (Q.rear + 1) % SIZE;
}

void remove(SqQueue &Q, ElemType &e){
    if(Q.front == Q.rear){  //队空
        return;
    }
    e = Q.base[Q.front];

    Q.front = (Q.front + 1) % SIZE;
}